#pragma once

#ifndef EXTERN

#include <fstream>
#include <iostream>
#include <regex>

#include <boost/asio.hpp>

#endif

#include <discordpp/bot.hh>
#include <discordpp/plugin-overload.hh>
#include <discordpp/plugin-ratelimit.hh>
#include <discordpp/plugin-responder.hh>
#include <discordpp/plugin-constructs.hh>
#include <discordpp/plugin-endpoints.hh>
#include <discordpp/plugin-interactionhandler.hh>
#include <discordpp/rest-beast.hh>
#include <discordpp/websocket-simpleweb.hh>

// Put more D++ plugin `include`s here

#ifndef EXTERN

extern template class discordpp::PluginInteractionHandler<discordpp::PluginEndpoints<discordpp::PluginConstructs<discordpp::PluginResponder<discordpp::PluginOverload<discordpp::PluginRateLimit<discordpp::WebsocketSimpleWeb<discordpp::RestBeast<discordpp::Bot>>>>>>>>;
using DppBot = discordpp::PluginInteractionHandler<discordpp::PluginEndpoints<discordpp::PluginConstructs<discordpp::PluginResponder<discordpp::PluginOverload<discordpp::PluginRateLimit<discordpp::WebsocketSimpleWeb<discordpp::RestBeast<discordpp::Bot>>>>>>>>;

#undef DPPBOTDEF

#endif